var jcookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        var path = options.path ? '; path=' + options.path : '';
        var domain = options.domain ? '; domain=' + options.domain : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};
 
$(document).ready(function(){
 bvl=new BaseViewList();
bvl.init();
});
var bvl; 
///var bvl=new BaseViewList();
/**
 * 一个表格对象
 */
 function BaseViewList(){
     var m_this=this;////对象本身
       this.OK='ok';
     this.ERROR='error';
     /**
      * 一闪而过的消息
      */
     this.Flash='Flash';
     
     this._csrf;
     
     var BV;
     
    this.url;///地址
    
    /**
     * 获取唯一编号
     */
    this.getId=function(){
        return BV.attr('id');
    };
    
     /**
      * 初始化
      */
     this.init=function(){
        BV=$('.BaseViewList');
        
        /*
        BV.find('.List_content .control .edit').click(function(th){
            var obj=$(this);
            bvl.on_edit(obj.attr('list_id'));
        });*/
          
          BV.find('.List_content  ').on('click','.control .edit',function(th){
            var obj=$(this);
            bvl.on_edit(obj.attr('list_id'));
        });
        
        
        
         BV.find('.List_content ').on('click','.control .delete',function(th){
                var obj=$(this);
            bvl.on_delete(obj.attr('list_id'),obj.attr('title'));
        });
        
          BV.find('.List_top  .delete').click(function(th){ 
            var list= BV.find('.List_content tr .td_select [type=checkbox]:checked');
            var str='';
            var arr=[];
            for(var i=0;i<list.length;i++){
                arr.push($(list[i]).attr('bvl_id'));
            }
            str=arr.join(',');
             bvl.on_delete(str,'选择');
        });
        
        
       m_this.url=BV.find('form').attr('action');
       m_this._csrf=$('#post_token').val();
       
       
         BV.find('.List_title .tab_select [type=checkbox]').click(function(th){
              var v=$(this).is(":checked");
              BV.find('.List_content tr .td_select [type=checkbox]').prop('checked',v);
        });
       
         
       
         BV.find('.List_title [td_class]').hover(function(){
      
             var _class=$(this).attr('td_class');
             BV.find(' tbody tr  .'+_class).addClass('on_hover');
         },
         function(){
                var _class=$(this).attr('td_class');
             BV.find(' tbody tr  .'+_class).removeClass('on_hover');
         });
       
       var autoName='auto'+m_this.getId();
       var auto=jcookie(autoName);
       if(auto===null){
           auto='true';
           jcookie(autoName,'true',{expires:30});
       }
       if(auto==='true'){
         //  _beginload();
       //    m_this.start_jiankong();
        }else{
            _stopload();
        }
       BV.find('.newmsg').click(
               function(){
              //   location.reload();
               }
                 );
         
         
         BV.find('tbody tr .td_select [type=checkbox]').click(
                 function(){
                     m_this.upSelectchecked(); 
                 });
         BV.find('thead tr .tab_select [type=checkbox]').click(
             function(){
                     m_this.upSelectchecked(); 
                 });
       
     };
     
     
     /**
      * 刷新选择
      */
     this.upSelectchecked=function(){
         var alllist=BV.find('tbody tr .td_select [type=checkbox]');
         for(var i=0;i<alllist.length;i++){
         
                     var obj=$(alllist[i]);
                     var bvlid=obj.attr('bvl_id');
                     var listobj=$('tr[list_id='+bvlid+']');
                     if(obj.is(":checked")){
                         listobj.addClass('selecton');
                     }else{
                         listobj.removeClass('selecton');
                     }
              }       
     };
     
     
     /**
      * 获取用户的选择
      */
     this.getSelectId=function(){
            var list= BV.find('.List_content tr .td_select [type=checkbox]:checked');
            var str='';
            var arr=[];
            for(var i=0;i<list.length;i++){
                arr.push($(list[i]).attr('bvl_id'));
            }
            str=arr.join(',');
             if(str==''){
             m_this.show('没有选择记录',bvl.ERROR);
             return '' ;
            }
            return str;
     };
     
     /**
      * 显示编辑窗口
      */
     this.on_edit=function(id){
         
         m_this.post({list_id:id,type:'edit'},function(data){
           ///  var r_id=data.r_id;
             var model=new Model_dialog(data,m_this);
              model.init();
             
         });
         
     };
     
      /**
      * 显示删除窗口
      */
     this.on_delete=function(id,str){
         if(id==''){
             m_this.show('没有选择记录',bvl.ERROR);
             return ;
         }
         
         var del=art.dialog({
                 content:'确认需要删除"'+str+'"的记录吗?',
                 ok:function(){
                     m_this.post({
                         type:'dialog_delete',
                         bvl_id:id
                     },function(data){
                        
                         m_this.js_list_delete(data);
                          m_this.show('删除成功',bvl.Flash);
                     });
                     
                 },
                 cancel:true
             });
     };
     
     
     /**
      * js删除表格中的数据
      */
     this.js_list_delete=function(data){
         var list=data.split(',');
         for(var i=0;i<list.length;i++){
             BV.find('.List_content tr[list_id='+list[i]+']').remove();
         }
         //BV.find('.List_content tr["list_id='+id+'"]');
     };
     
     
     /**
      * 和服务器联系
      */
     this.post=function(par,fun){
         BV.addClass('manglv');
         
         par.BaseViewList='true';
         par._csrf=m_this._csrf;
         var url=BV.find('form').attr('action');
         url=location.href;

         $.ajax({
             headers: {
                 'X-CSRF-TOKEN': $('#post_token').val()
             },
             url: url,
             type: "post",
             dataType: "json",
             data: par,
             success: function (data) {
                 BV.removeClass('manglv');
                 if(data.error=='0'){
                     fun(data.content);
                 }else{
                     bvl.show(data.content,bvl.ERROR);
                 }
             }
         });





         /*
         webapp.post(url,par,function(data){
             BV.removeClass('manglv');
             if(data.error=='0'){
                 fun(data.content);
             }else{
                 bvl.show(data.content,bvl.ERROR);
             }
         });*/
         
     };
     
     
     
     
     
     
     
     
     
     /**
      * 显示错误信息
      * */
     this.show=function(msg,type){
         if(type===m_this.Flash){
             artDialog.tips(msg);
             return;
         }
         
         if(type===m_this.ERROR){
             art.dialog({
                icon: 'error',
                content:msg,
                ok:true
            });
            return;
         }
         
         alert(msg);
     };
     
   
   
   this.openImgUrl=function(th){
       var url=$(th).attr('src');
       window.open(url);
   };
   
   
   
   
   
   
   
   
   var startTime=0;////间隔时间
   /**
    * 启动监控
    */
   this.start_jiankong=function(){
       
       
       
       startTime=BV.find('#start_jiankong').val();
       if(startTime=='0'){
           return;
       }
       startTime=parseInt(startTime);
    //   setInterval(function(){
      setTimeout(
              function(){
                  m_this.get_data();
              },startTime
               );     
       
           
           
    //   },start);
   };
   
   
   /**
    * 获取一次数据
    */
   this.get_data=function(){
       
          startTime=BV.find('#start_jiankong').val();
            startTime=parseInt(startTime);
          
       if(startTime===0){
           return;
       }
       
       
           m_this.post(
                   {
                       type:'start_jiankong',
               max_val:m_this.get_max_val()
                   },function(data){
                       if(data.max_val!=m_this.get_max_val()){
                           BV.find('#max_val').val(data.max_val);
                           m_this.on_update(data);///调用更新事件
                       }else{
                            setTimeout(
                                    function(){
                                        m_this.get_data();
                                    },startTime
                             );     
                       }
                   }
                   );
   };
   
   
   
   
   /**
    * 最大唯一值
    */
   this.get_max_val=function(){
       return BV.find('#max_val').val();
   };
   
   
   
 
   this._max_post_val=999;///如果超过了这个值,则刷新一下
   /**
    * 如果发现数据更新了,则调用
    */
   this.on_update=function(data){
       var count=parseInt(BV.find('#count').val());
       data.count=parseInt(data.count);
       if(data.count>count){
        //   BV.find('.newmsg').html('<p class="p"  >刚刚发现了<span class="red">'+(data.count-count)+'</span>条新记录</p>');
       }
       
      // BV.find('.top_tongji').html('查询到的数据有'+data.count+'行');
       
       
       /**
        * 重新排序
        */
       data.newhtml=_paixuDdaoxu(data.newhtml);
       
       
       /*
       for(var i=0;i<data.newhtml.length;i++){
           m_this.up_BV_data(data.newhtml[i].list_id,data.newhtml[i].html);
       }
       */
      var jg=10;
       var dg=data.newhtml.length/(startTime/jg);
      var flKey=0;
       var key=0;
       m_this.intTime=setInterval(function(){
           var pkey=parseInt(flKey);
           flKey+=dg;
        //   console.log(flKey+"\r\n");
           if(key===pkey){
               return ;
           }
           m_this.up_BV_data(data.newhtml[key].list_id,data.newhtml[key].html);
           key=pkey;
           
           if(pkey===data.newhtml.length){
               clearInterval(m_this.intTime);
               m_this.get_data();
               return;
           }
           
            
           
       },jg);
       
       
       
       
       /**
        * 判断一下,如果页面行数太多,就删除一些
        */
       var maxI=35;
      var bvlist= BV.find('.List_content tr[list_id]');
     if(bvlist.length<maxI){
         return ;
     }
     
     for(var i=maxI;i<bvlist.length;i++){
         if(i>maxI){
             $(bvlist[i]).remove();
         }
     }
     
     if(m_this._max_post_val<1){
         location.reload();
     }
       m_this._max_post_val--;
   };
   
   /**
    * 停止动态加载
    */
   function _stopload(){
        $('#loadtime .loadbutton').text('开始动态加载');
     $('#loadtime .loadbutton').removeClass('btn-info');
         clearInterval(m_this.intTime);
         
          var autoName='auto'+m_this.getId(); 
           jcookie(autoName,'false',{expires:30});
     
         
   };
   /**
    * 开始动态加载
    */
   function _beginload(){
        $('#loadtime .loadbutton').text('关闭动态加载');
         $('#loadtime .loadbutton').addClass('btn-info');
         clearInterval(m_this.intTime);
           m_this.get_data();
            var autoName='auto'+m_this.getId(); 
           jcookie(autoName,'true',{expires:30});
   };
   
   
   /**
    * 停止动态加载
    */
   this.stopLoad=function(){     
      if($('#loadtime .loadbutton').hasClass('btn-info')){
         _stopload();
      }else{
        _beginload();
      }      
   };
   
   /**
    * 新增或者添加一行记录
    */
   this.up_BV_data=function(id,html){
       if(BV.find('tr[list_id='+id+']')[0]){
           BV.find('tr[list_id='+id+']').replaceWith(html);
       }else{
           var obj=$(html);
          obj.hide();
           BV.find('tbody').prepend(obj);
          //  obj.slideDown("slow");
           obj.fadeIn(3000);
       }
   };
   
   
   
   /**
    * _paixuDdaoxu
    * 从新排序
    */
   function _paixuDdaoxu($array){
       var list=[];
       for(var i=$array.length;i>0;i--){
           list.push($array[i-1]);
       }
       return list;
   };
   
   
   /**
    * 刷新指定id的数据
    */
   this.UpTrList=function(id){
       m_this.post({
            type:'UpTrList',
            list_id:id
       },function(data){
           m_this.up_BV_data(data.list_id,data.model);
       });
   };
 }
 
 
 /**
  * 窗口模块
  */
 
 function Model_dialog(model,biaoge){
     var m_data=model;
     var m_biaoge=biaoge;
     /**
      * 窗口的rid,一个窗口有一个唯一的rid
      */
    var r_id;
    /**
     * 本对象本身
     */
    var m_this=this;
    
    this.K;
    

     r_id=m_data.r_id;
     /**
      * 窗口对象
      */
     this.win;
     this.init=function(){
            
            m_this.win= art.dialog({
                 content:m_data.html,
                 ok:function(){
                     
                   m_this.ok();
                 },
                 cancel:true
             });
             
             /**
              * 初始化窗口的各个控件
              */
           m_this.init_dialog();
     };
     
     /**
      * 窗口点击了确定
      */
     this.ok=function(){
         
          var htmltext=m_this.$('[text=html]');
         for(var i=0;i<htmltext.length;i++){
             var obj=$(htmltext[i]);
             obj[0].kedit.sync();
         }
         
         
         var bvl_id=m_this.$('#bvl_id').val();
         var cs={};
         var list=m_this.$('[zd]');
         for(var i=0;i<list.length;i++){
             cs[$(list[i]).attr('zd')]=$(list[i]).val();
         }
         cs.bvl_id=bvl_id;
         cs.type='dialog_ok';
         
         m_biaoge.post(cs,function(data){
             m_biaoge.up_BV_data(data.list_id,data.model);
         });
         
      
     };
     
     
     
     
     
     /**
      * 初始化窗口中的各个控件
      */
     this.init_dialog=function(){
         
             KindEditor.ready(function(K) {
            //   m_this.K=K;
        });
         
          var upbutton=function(img){
                            var imgid=img.attr("img");
                            var img_str=m_this.$('[l_img='+imgid+']');
                    var uploadbutton = KindEditor.uploadbutton({
                        button : img[0],
                        fieldName : 'imgFile',
                    url :m_biaoge.url,
                        afterUpload : function(data) {
                                if (data.error === 0) {
                                    
                                   m_this.$('[zd='+imgid+']').val(data.url); 
                                     m_this.$('[l_img='+imgid+']').attr('src',data.url);  
                                       art.dialog.list['art_upimg'].close();
                                    /*
                                $("#"+imgid).val(data.url);
                                $("#"+imgid+'_f').val(data.thumb);
                                 img_str.attr("src",data.url);
                                      art.dialog.list['art_upimg'].close();*/
                                } else {

                                        art.dialog.list['art_upimg'].content(data.message);  
                                }
                        }
                });
                uploadbutton.fileBox.change(function(e) {
                    
                  var form=uploadbutton.form[0];
                    var _csrf=m_biaoge._csrf;
                   
                    if(!$(form).find('[name=_csrf]')[0]){
                         var html='<input type="hidden" name="_csrf"  value="'+_csrf+'" />\n\
<input type="hidden" name="BaseViewList" value="true" /> \n\
<input type="hidden" name="type" value="upfile" />';
                         $(form).append(html);
                    }
                    
                        uploadbutton.submit();
                        art.dialog({id: 'art_upimg',title: "上传"});
                });

    };
    
       var imgl=m_this.$("[img]");
    for(var i=0;i<imgl.length;i++){
        var imgstr=$(imgl[i]);
        upbutton(imgstr);
    }
      
         

         var htmltext=m_this.$('[text=html]');
         for(var i=0;i<htmltext.length;i++){
             var obj=$(htmltext[i]);
             obj[0].kedit=bvl.K.create(obj,{
                        width : '500px',
                        uploadJson: '/admin/view/upimg'
                });
         }
       mfun();
 };
     this.$=function(sel){
         return $('[c_rand='+r_id+']').find(sel);
     };
 };

 $(document).ready(function(){
           KindEditor.ready(function(K){
          bvl.K=K;
      });

     artDialog.tips = function (content, time) {
         return artDialog({
             id: 'Tips',
             title: false,
             cancel: false,
             fixed: true,
             lock: false
         })
             .content('<div style="padding: 0 1em;">' + content + '</div>')
             .time(time || 1.5);
     };
 });


function mfun() {///
    /*   $('[xz=int]').on("keyup",function(){
     this.value=this.value.replace(/\D/g,'');
     });
     */
    $('[xz=int]').keypress(function () {
        return (/[\d.]/.test(String.fromCharCode(event.keyCode)));
    });


    $(".body_height").css("height", window.screen.availHeight + "px");
    $("[lhref]").click(function () {
        var str = $(this).attr("lhref");
        location.href = str;
    });
}

